package com.itheima.interface3; // 包声明：声明当前类属于com.itheima.interface3包

public class Test { // 定义一个公开的Test类
    public static void main(String[] args) { // 主方法：程序的入口点，JVM会从这里开始执行代码
        // 目标：完成接口的小案例。
        // 1、定义学生类，创建学生对象，封装学生数据，才能交给别人处理学生的数据。
        // 2、准备学生数据,目前我们自己造一些测试数据
        Student[] allStudents = new Student[10]; // 创建一个可以存储10个Student对象的数组
        allStudents[0] = new Student("张三", '男', 100); // 数组第1个位置存储名为"张三"的男学生，分数100
        allStudents[1] = new Student("李四", '女', 99); // 数组第2个位置存储名为"李四"的女学生，分数99
        allStudents[2] = new Student("王五", '男', 98); // 数组第3个位置存储名为"王五"的男学生，分数98
        allStudents[3] = new Student("赵六", '女', 97); // 数组第4个位置存储名为"赵六"的女学生，分数97
        allStudents[4] = new Student("孙七", '男', 96); // 数组第5个位置存储名为"孙七"的男学生，分数96
        allStudents[5] = new Student("周八", '女', 95); // 数组第6个位置存储名为"周八"的女学生，分数95
        allStudents[6] = new Student("吴九", '男', 94); // 数组第7个位置存储名为"吴九"的男学生，分数94
        allStudents[7] = new Student("郑十", '女', 93); // 数组第8个位置存储名为"郑十"的女学生，分数93
        allStudents[8] = new Student("赵敏", '女', 100); // 数组第9个位置存储名为"赵敏"的女学生，分数100
        allStudents[9] = new Student("周芷若", '女', 90); // 数组第10个位置存储名为"周芷若"的女学生，分数90

        // 3、提供两套业务实现方案，支持灵活切换（解耦合）： 面向接口编程。
        //    -- 定义一个接口（规范思想）：必须完成打印全班学生信息，打印平均分。(ClassDataInter)
        //    -- 定义第一套实现类，实现接口：实现打印学生信息，实现打印平均分。
        //    -- 定义第二套实现类，实现接口：实现打印学生信息(男女人数)，实现打印平均分（去掉最高分和最低分）。
        ClassDataInter cdi = new ClassDataInterImpl2(allStudents); // 创建ClassDataInterImpl2的实例，并用接口类型接收
        cdi.printAllStudentInfos(); // 调用接口中的打印学生信息方法
        cdi.printAverageScore(); // 调用接口中的打印平均分方法
    } // 主方法结束
} // Test类结束
